package com.yunchao.library.socket.config

import com.yunchao.library.socket.constants.Values

/**
* TCP客户端配置参数
* @property host 服务器地址
* @property port 服务器端口
* @property connectTimeout 连接超时（毫秒）
* @property autoReconnect 是否自动重连
* @property maxReconnectAttempts 最大重连次数
* @property reconnectBaseDelay 基础重连延迟（毫秒）
* @property maxReconnectDelay 最大重连延迟（毫秒）
* @property heartbeatInterval 心跳间隔（毫秒）
* @property largeMessageThreshold 大消息分块阈值（字节）
* @property chunkSize 分块大小（字节）
* @property maxConcurrentSends 最大并发发送数
*/
data class TcpConfig(
    val host: String,
    val port: Int,
    val autoReconnect: Boolean = true,
    val heartbeatInterval: Long = Values.DEFAULT_HEARTBEAT.toLong(),
    val connectTimeout: Int = 5_000,
    val socketTimeout: Int = 0,
    val maxReconnectAttempts: Int = Int.MAX_VALUE,
    val maxReconnectDelay: Long = 30_000L,
    val reconnectBaseDelay: Long = 1_000L,
    val largeMessageThreshold: Int = 5 * 1024 * 1024, // 5MB
    val chunkSize: Int = 1 * 1024 * 1024, // 1MB
    val maxConcurrentSends: Int = 3,
    val messageBufferCapacity: Int = 64
)